package org.dromara.quick.chat.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.github.linpeilie.annotations.AutoMapper;
import io.github.linpeilie.annotations.AutoMappers;
import lombok.Data;
import org.dromara.quick.chat.model.vo.ImGroupMemberVO;

import java.util.Date;

/**
 * 群成员表，记录群聊中成员的相关信息 【群成员与用户关系表】
 * @TableName im_group_member
 */
@TableName(value ="im_group_member")
@Data
@AutoMappers({
    @AutoMapper(target = ImGroupMemberVO.class)
})
public class ImGroupMember {
    /**
     * (唯一标识) 群成员表的唯一标识编号，系统自动生成，用于区分不同的群成员记录
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * (关联群编号) 关联 im_group_chat 表中的群编号，表明该群成员所属的群聊
     */
    private Long groupId;

    /**
     * (群成员编号) 群成员对应的用户编号，关联平台用户表中的用户编号
     */
    private Long memberId;

    /**
     * (群成员权限) 群成员在群内拥有的权限，“GroupOwner” 表示群主，“Administrator” 表示管理员，“RegularMember” 表示普通群成员
     */
    private String  memberPermission;

    /**
     * (群备注) 群成员对所在群聊添加的备注信息
     */
    private String groupNote;

    /**
     * (状态) 群成员与群的关系状态，“InvitationSent” 表示发送邀请，“Accepted” 表示同意，“Rejected” 表示拒绝
     */
    private String status;

    /**
     * 发送邀请的请求语言
     */
    private String invitationRequestLanguage;

    /**
     * 备注拼音，如果没有备注就使用群名称
     */
    private String groupNotePinYin;

    /**
     * (是否禁言) 表示群成员是否被群管理员设置为禁言状态，0 代表未禁言，1 代表已禁言
     */
    private Integer isMuted;

    /**
     * (创建时间) 该群成员记录的创建时间，系统自动记录
     */
    private Date createTime;
}
